package org.jeecg.modules.mes.service;

import java.util.List;
import java.util.Map;

/**
 * MES生产统计服务接口
 * 
 * @author wanke-erp
 * @since 2025-09-15
 */
public interface IMesStatisticsService {

    /**
     * 获取生产效率概览统计
     * 
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 生产效率概览数据
     */
    Map<String, Object> getProductionEfficiencyOverview(String startDate, String endDate);

    /**
     * 获取生产计划vs实际完成对比数据
     * 
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @param timeType 时间类型(month/quarter/year)
     * @return 计划vs实际对比数据
     */
    Map<String, Object> getPlanVsActualData(String startDate, String endDate, String timeType);

    /**
     * 获取生产效率趋势数据
     * 
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @param timeType 时间类型(month/quarter/year)
     * @return 生产效率趋势数据
     */
    List<Map<String, Object>> getProductionEfficiencyTrend(String startDate, String endDate, String timeType);

    /**
     * 获取工序耗时分析数据
     * 
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 工序耗时分析数据
     */
    List<Map<String, Object>> getProcessTimeAnalysis(String startDate, String endDate);

    /**
     * 获取任务状态分布数据
     * 
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 任务状态分布数据
     */
    List<Map<String, Object>> getTaskStatusDistribution(String startDate, String endDate);

    /**
     * 获取员工效率排行榜
     * 
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @param limit 返回记录数限制
     * @return 员工效率排行榜数据
     */
    List<Map<String, Object>> getEmployeeEfficiencyRanking(String startDate, String endDate, Integer limit);

    /**
     * 获取人员效率概览统计
     * 
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 人员效率概览统计数据
     */
    Map<String, Object> getPersonnelEfficiencyOverview(String startDate, String endDate);

    /**
     * 获取员工产量排行
     * 
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @param limit 返回记录数限制
     * @return 员工产量排行数据
     */
    List<Map<String, Object>> getEmployeeProductionRanking(String startDate, String endDate, Integer limit);

    /**
     * 获取工时利用率统计
     * 
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 工时利用率统计数据
     */
    List<Map<String, Object>> getWorkHourUtilization(String startDate, String endDate);

    /**
     * 获取技能分布统计
     * 
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 技能分布统计数据
     */
    List<Map<String, Object>> getSkillDistribution(String startDate, String endDate);

    /**
     * 获取培训效果分析
     * 
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 培训效果分析数据
     */
    List<Map<String, Object>> getTrainingEffectAnalysis(String startDate, String endDate);
}
